package release_system

import (
	"errors"
	"github.com/wonderivan/logger"
	gitlabapi "github.com/xanzy/go-gitlab"
	"k8s-platform/config"
	"log"
)

var Git git

type git struct{}

type Project struct {
	Name string
}

// 新增
//func (*git) Add(git *model.Git) error {
//	//写死预防多次添加
//	git.ID = 1
//	_, has, err := dao.Git.Has(git.ID)
//	if err != nil {
//		return err
//	}
//	if has {
//		return errors.New("该Git已存在,demo版本只支持一个库")
//	}
//
//	if err := dao.Git.Add(git); err != nil {
//		return err
//	}
//	return nil
//}

// 库列表
func (*git) List() ([]*gitlabapi.Project, error) {
	//写死只支持一个git代码库，后续根据用户权限来区分git库
	//username := "git"
	//data := &model.Git{}
	//result := db.DB.Where("name = ?", username).First(&data)
	//if result.Error != nil {
	//	logger.Error("获取git库注册数据不存在,请注册git库")
	//	return nil, errors.New("获取git库注册数据不存在，请注册git库")
	//}
	//gitlab_token := data.Git_token
	//gitlab_url := data.Git_url

	jenkinsConfigTest := &config.JenkinsConfigTest{}
	mysqlconfig, err := jenkinsConfigTest.ConfigTest()
	if err != nil {
		log.Fatalf("Failed to parse configuration: %v", err)
	}

	git, err := gitlabapi.NewClient(mysqlconfig.Gitlab_token, gitlabapi.WithBaseURL(mysqlconfig.Gitlan_url))
	if err != nil {
		logger.Error("获取git库列表失败", err)
		return nil, errors.New("获取git库列表失败" + err.Error())
	}
	projects, _, err := git.Projects.ListProjects(nil)

	return projects, nil
}

// 分支列表
func (*git) BranchList(brancheID int) ([]*gitlabapi.Branch, error) {
	//写死只支持一个git代码库，后续根据用户权限来区分git库
	//username := "git"
	//data := &model.Git{}
	//result := db.DB.Where("name = ?", username).First(&data)
	//if result.Error != nil {
	//	logger.Error("获取git库注册数据不存在,请注册git库")
	//	return nil, errors.New("获取git库注册数据不存在，请注册git库")
	//}
	//gitlab_token := data.Git_token
	//gitlab_url := data.Git_url

	jenkinsConfigTest := &config.JenkinsConfigTest{}
	mysqlconfig, err := jenkinsConfigTest.ConfigTest()
	if err != nil {
		log.Fatalf("Failed to parse configuration: %v", err)
	}

	git, err := gitlabapi.NewClient(mysqlconfig.Gitlab_token, gitlabapi.WithBaseURL(mysqlconfig.Gitlan_url))
	branches, _, err := git.Branches.ListBranches(brancheID, &gitlabapi.ListBranchesOptions{})
	if err != nil {
		logger.Error("获取git库分支列表失败", err)
		return nil, errors.New("获取git库分支列表失败" + err.Error())
	}

	return branches, nil
}

//// 更新
//func (*git) Update(git *model.Git, gitID int64) error {
//	return dao.Git.Update(git, gitID)
//}

//
//// 同步
//func (*hostserver) Sync(hostserver *model.HostServer, updategroupID int64) error {
//	return dao.HostServer.Sync(hostserver, updategroupID)
//}
//
//// 删除
//func (*hostserver) Delete(hostserver *model.HostServer, id int64) error {
//	return dao.HostServer.Delete(hostserver, id)
//}
